package com.smartleanx.module.hrm.enums;

import com.smartleanx.framework.common.exception.ErrorCode;

/**
 * 错误码枚举类
 * <p>
 * hrm 系统，使用 1-100-000-000 段
 */
public interface ErrorCodeConstants {

    // ========== 欢迎语 1-100-000-000 ==========
    ErrorCode WELCOME_MESSAGE_NOT_EXISTS = new ErrorCode(1_100_001_001, "欢迎语不存在");

    // 标准合同库分类
    ErrorCode CONTRACT_TYPE_NOT_EXISTS = new ErrorCode(1_100_002_001, "合同库分类不存在");

    // 公司制度分类
    ErrorCode COMPANY_SYSTEM_TYPE_NOT_EXISTS = new ErrorCode(1_100_003_001, "公司制度分类不存在");

    // 公司制度
    ErrorCode COMPANY_SYSTEM_NOT_EXISTS = new ErrorCode(1_100_004_001, "公司制度不存在");

    // 学习范围
    ErrorCode COMPANY_SYSTEM_DEPT_NOT_EXISTS = new ErrorCode(1_100_005_001, "学习范围不存在");

    // 已学习员工列表
    ErrorCode COMPANY_SYSTEM_EMPLOYEE_EXISTS = new ErrorCode(1_100_006_000, "已完成本制度的学习");

    // ========== 员工 1_100_006 ==========
    ErrorCode EMPLOYEE_NOT_EXISTS = new ErrorCode(1_100_006_001, "员工信息不存在");
    ErrorCode EMPLOYEE_STATUS_NOT_ALLOW_REGULARIZE = new ErrorCode(1_100_006_002, "员工当前状态不允许进行转正操作");
    ErrorCode EMPLOYEE_STATUS_NOT_ALLOW_CHANGE_POST = new ErrorCode(1_100_006_003, "员工当前状态不允许进行调动操作");
    ErrorCode EMPLOYEE_STATUS_NOT_ALLOW_LEAVE = new ErrorCode(1_100_006_004, "员工当前状态不允许进行离职操作");
    ErrorCode EMPLOYEE_STATUS_NOT_INFORMAL_TYPES = new ErrorCode(1_100_006_005, "正式员工不允许选择非正式类型");
    ErrorCode EMPLOYEE_CHOOSE_PROBATIONARY_PERIOD = new ErrorCode(1_100_006_006, "员工试用期期限不能为空");
    ErrorCode EMPLOYEE_TYPE_NOT_EXISTS = new ErrorCode(1_100_006_007, "非正式类型不能为空");
    ErrorCode EMPLOYEE_INFO_NOT_EXISTS = new ErrorCode(1_100_006_008, "员工导入模板(*)为必填项");
    ErrorCode EMPLOYEE_NO_CANNOT_BE_REPEATED = new ErrorCode(1_100_006_009, "工号不能重复");
    ErrorCode EMPLOYEE_ACCOUNT_DUPLICATE = new ErrorCode(1_100_006_010, "员工已绑定登录账号");
    ErrorCode EMPLOYEE_ACCOUNT_NOT_EXISTS = new ErrorCode(1_100_006_011, "员工登录账号信息不存在");
    ErrorCode EMPLOYEE_MOBILE_INCORRECT = new ErrorCode(1_100_006_012, "请输入正确的手机号码");
    ErrorCode EMPLOYEE_POSTLEVEL_INCORRECT = new ErrorCode(1_100_006_013, "当前岗位没有该职级");
    ErrorCode EMPLOYEE_SYSTEM_ROLE_NOT_EXISTS = new ErrorCode(1_100_006_014, "启用中角色不存在");
    ErrorCode EMPLOYEE_POST_NOT_EXISTS = new ErrorCode(1_100_006_015, "员工岗位不存在");
    ErrorCode EMPLOYEE_DEPT_NOT_EXISTS = new ErrorCode(1_100_006_016, "员工部门不存在");
    ErrorCode EMPLOYEE_ACCOUNT_NOT_ALLOW_CHANGE = new ErrorCode(1_100_006_017, "员工登录账号信息不允许变更");
    ErrorCode is_leader_error = new ErrorCode(1_100_006_018, "本部门已有负责人");
    ErrorCode EMPLOYEE_PHONE_EXISTS = new ErrorCode(1_100_006_019, "员工信息手机号已存在");
    ErrorCode EMPLOYEE_APPLYSEAPTIME_EXISTS = new ErrorCode(1_100_006_020, "员工转正日期不能为空");


    // ========== 离职信息 1_100_007_001 ==========
    ErrorCode EMPLOYEE_SEPARATION_INFO_NOT_EXISTS = new ErrorCode(1_100_007_001, "员工离职信息不存在");
    ErrorCode EMPLOYEE_SEPARATION_INFO_EXISTING = new ErrorCode(1_100_007_002, "员工离职申请已提交");

    // ========== 员工教育经历 1_100_008_001 ==========
    ErrorCode EMPLOYEE_EDUCATION_EXPERIENCE_NOT_EXISTS = new ErrorCode(1_100_008_001, "员工教育经历不存在");

    // ========== 员工工作经历 1_100_009_001 ==========
    ErrorCode EMPLOYEE_WORK_EXPERIENCE_NOT_EXISTS = new ErrorCode(1_100_009_001, "员工工作经历不存在");

    // ========== 员工培训经历 1_100_010_001 ==========
    ErrorCode EMPLOYEE_TRAINING_EXPERIENCE_NOT_EXISTS = new ErrorCode(1_100_010_001, "员工培训经历不存在");

    // ========== 员工合同 1_100_011_001 ==========
    ErrorCode EMPLOYEE_CONTRACT_NOT_EXISTS = new ErrorCode(1_100_011_001, "员工合同不存在");
    ErrorCode CONTRACT_START_TIME_UNLATER_END_TIME = new ErrorCode(1_100_011_002, "合同开始时间不能晚于结束时间");
    ErrorCode EMPLOYEE_CONTRACT_IN_PROGRESS = new ErrorCode(1_100_011_003, "已有执行中合同");
    ErrorCode EMPLOYEE_OTHER_CONTRACTS = new ErrorCode(1_100_011_004, "该合同起止时间内已存在其他合同");
    ErrorCode EMPLOYEE_FORMAL_CONTRACTS = new ErrorCode(1_100_011_005, "当前合同类型不适用于正式员工");
    ErrorCode EMPLOYEE_INFORMAL_CONTRACTS = new ErrorCode(1_100_011_006, "当前合同类型不适用于非正式员工");
    ErrorCode EMPLOYEE_LABOR_CONTRACT_OVERDUE = new ErrorCode(1_100_011_007, "员工合同期限不允许超过6个月");
    ErrorCode EMPLOYEE_ONE_NO_FIXED_TERM_CONTRACT = new ErrorCode(1_100_011_008, "不允许有多个无固定期限合同");
    ErrorCode EMPLOYEE_RENEWAL_CONTRACT = new ErrorCode(1_100_011_009, "续签合同开始日期需与上一份到期合同结束日期衔接");
    ErrorCode CONTRACT_TERMINATION_TIME_BEFORE_START_TIME = new ErrorCode(1_100_011_010, "合同终止日期不能早于合同开始日期");
    ErrorCode CONTRACT_TERMINATION_TIME_AFTER_END_TIME = new ErrorCode(1_100_011_011, "合同终止日期不能晚于合同结束日期");
    ErrorCode EMPLOYEE_RENEWAL_CONTRACT1 = new ErrorCode(1_100_011_012, "合同日期重叠");

    // ========== 备忘录 1_100_012_001 ==========
    ErrorCode MEMORANDUM_NOT_EXISTS = new ErrorCode(1_100_012_001, "备忘录不存在");

    // ========== 员工证书 1_100_013_001 ==========
    ErrorCode EMPLOYEE_CERTIFICATE_NOT_EXISTS = new ErrorCode(1_100_013_001, "员工证书不存在");

    // ========== 个人信息-时间校验 1_100_014_001 ==========
    ErrorCode ADMISSION_TIME_UNLATER_GRADUATION_TIME = new ErrorCode(1_100_014_001, "入学时间不能晚于毕业时间");
    ErrorCode WORK_START_TIME_UNLATER_END_TIME = new ErrorCode(1_100_014_002, "工作开始时间不能晚于结束时间");
    ErrorCode CERTIFICATE_START_TIME_UNLATER_END_TIME = new ErrorCode(1_100_014_003, "证书开始时间不能晚于结束时间");
    ErrorCode TRAINING_START_TIME_UNLATER_END_TIME = new ErrorCode(1_100_014_004, "培训经历开始时间不能晚于结束时间");

    // ========== 员工成长轨迹 1_100_014_001 ==========
    ErrorCode EMPLOYEE_GROWTH_RECORD_NOT_EXISTS = new ErrorCode(1_100_014_000, "员工成长轨迹不存在");

    // ==========  操作日志 1_100_015_001 ==========
    ErrorCode OPERATION_LOG_NOT_EXISTS = new ErrorCode(1_100_015_001, "操作日志不存在");

    //==========  审批相关 1_100_016_001 ==========
    ErrorCode SALES_ORDER_APPROVE_ALREADY = new ErrorCode(1_100_016_001, "已发起的审核流程");

    //==========  转正记录不存在 1_100_017_001 ==========
    ErrorCode EMPLOYEE_REGULARIZE_RECORD_NOT_EXISTS = new ErrorCode(1_100_017_001, "转正记录不存在");
    ErrorCode EMPLOYEE_REGULARIZE_RECORD_EXISTING = new ErrorCode(1_100_017_002, "请勿重复提交转正申请");

    //==========  调动记录不存在 1_100_018_001 ==========
    ErrorCode EMPLOYEE_TRANSFER_RECORD_NOT_EXISTS = new ErrorCode(1_100_018_001, "调动记录不存在");
    ErrorCode EMPLOYEE_TRANSFER_RECORD_EXISTING = new ErrorCode(1_100_018_002, "已存在审批中的调动记录");
    ErrorCode NO_EMPLOYEE_TRANSFER_RECORDS = new ErrorCode(1_100_018_003, "无调动记录");

    // ========== 风险类型 1_100_019_001 ==========
    ErrorCode RISK_TYPE_NOT_EXISTS = new ErrorCode(1_100_019_001, "风险类型不存在");

    // ========== 风险 1_100_020_001 ==========
    ErrorCode RISK_NOT_EXISTS = new ErrorCode(1_100_020_001, "风险不存在");
    ErrorCode RISK_EMPLOYEE_NOT_EXISTS = new ErrorCode(1_100_020_002, "员工风险不存在");

    // ========== 模板导入 1_100_021_001 ==========
    ErrorCode DATA_IS_EMPTY = new ErrorCode(1_100_021_001, "导入数据为空");
    ErrorCode DATA_IMPORT_FAILED = new ErrorCode(1_100_021_002, "员工数据导入失败");
    ErrorCode DATA_HEADER_IS_EMPTY = new ErrorCode(1_100_021_003, "Excel表头不能为空");

    // ========== 薪资 1_100_022_000 ==========
    ErrorCode PAYROLL_NOT_EXISTS = new ErrorCode(1_100_022_000, "薪资月份不存在");
    ErrorCode PAYROLL_IMPORT_STATE_ERROR = new ErrorCode(1_100_022_001, "当前月份薪资不允许导入");
    ErrorCode PAYROLL_IMPORT_FIELD_ERROR = new ErrorCode(1_100_022_002, "薪资导入模板有误");
    ErrorCode PAYROLL_FIELD_USED = new ErrorCode(1_100_022_003, "薪资项正在使用中，需当前薪资归档后修改");
    ErrorCode PAYROLL_EXISTS = new ErrorCode(1_100_022_004, "{}月薪资正在核算中，不可导入其它月份");
    ErrorCode PAYROLL_ARCHIVED = new ErrorCode(1_100_022_005, "该薪资月份已归档");

    // ========== 薪资详情 1_100_023_000 ==========
    ErrorCode PAYROLL_DETAIL_NOT_EXISTS = new ErrorCode(1_100_023_000, "薪资详情不存在");
    ErrorCode PAYROLL_DETAIL_CREATED = new ErrorCode(1_100_023_001, "薪资导入重复");
    ErrorCode PAYROLL_DETAIL_EXISTS = new ErrorCode(1_100_023_002, "工号为【{}】的薪资信息已存在");
    ErrorCode PAYROLL_DETAIL_EMPLOYEE_NO_NULL = new ErrorCode(1_100_023_003, "工号不能为空");
    ErrorCode PAYROLL_DETAIL_EMPLOYEE_NO_DUPLICATE = new ErrorCode(1_100_023_004, "工号存在重复");
    ErrorCode PAYROLL_DETAIL_EMPLOYEE_NO_NOT_EXISTS = new ErrorCode(1_100_023_005, "工号为【{}】的员工不存在");
    ErrorCode PAYROLL_DETAIL_EMPLOYEE_ID_NOT_EXISTS = new ErrorCode(1_100_023_006, "部分员工的薪资记录不存在");
    ErrorCode PAYROLL_DETAIL_UPDATE_APPROVE_RESULT_ERROR = new ErrorCode(1_100_023_007, "存在审核中的薪资记录");
    ErrorCode PAYROLL_DETAIL_UPDATE_SEND_STATUS_ERROR = new ErrorCode(1_100_023_008, "存在已发送的工资条");
    ErrorCode PAYROLL_DETAIL_ID_NOT_EXISTS = new ErrorCode(1_100_023_009, "部分薪资详情不存在");
    ErrorCode PAYROLL_DETAIL_APPROVE_RESULT_NOT_PASSED = new ErrorCode(1_100_023_010, "存在未审核通过的薪资记录");
    ErrorCode PAYROLL_DETAIL_WITHDRAW_SEND_STATUS_ERROR = new ErrorCode(1_100_023_011, "存在未处于发送中状态的工资条");
    ErrorCode PAYROLL_DETAIL_WITHDRAW_CONFIRM_STATUS_ERROR = new ErrorCode(1_100_023_012, "存在已确认的工资条");
    ErrorCode PAYROLL_DETAIL_EMPLOYEE_NOT_EXISTS = new ErrorCode(1_100_023_013, "有的员工已不存在");
    ErrorCode PAYROLL_DETAIL_EMPLOYEE_NOT_RETIRE = new ErrorCode(1_100_023_014, "存在员工未离职");
    ErrorCode PAYROLL_DETAIL_NOT_ALL_CONFIRM = new ErrorCode(1_100_023_015, "工资条未确认完成，需全部确认后归档");
    ErrorCode PAYROLL_DETAIL_EMPLOYEE_NAME_ERROR = new ErrorCode(1_100_023_016, "工号为【{}】的员工姓名有误");
    ErrorCode PAYROLL_DETAIL_EMPLOYEE_DEPT_ERROR = new ErrorCode(1_100_023_017, "工号为【{}】的员工部门有误");
    ErrorCode PAYROLL_DETAIL_EMPLOYEE_POST_ERROR = new ErrorCode(1_100_023_018, "工号为【{}】的员工岗位有误");
    ErrorCode PAYROLL_DETAIL_EMPLOYEE_POST_LEVEL_ERROR = new ErrorCode(1_100_023_019, "工号为【{}】的员工职级有误");
    ErrorCode PAYROLL_DETAIL_USER_DEPT_ID_NULL = new ErrorCode(1_100_023_020, "账号未分配部门，不允许操作");
    ErrorCode PAYROLL_DETAIL_ARCHIVED = new ErrorCode(1_100_023_021, "存在工资条已归档");
    ErrorCode PAYROLL_DETAIL_NOT_UPDATED = new ErrorCode(1_100_023_022, "存在薪资未修改过，不允许操作");
    ErrorCode PAYROLL_DETAIL_APPROVED = new ErrorCode(1_100_023_023, "存在薪资已审核通过，不允许操作");
    ErrorCode PAYROLL_DETAIL_APPROVE_EMPTY = new ErrorCode(1_100_023_024, "薪资已审核，请勿重复提交");
    ErrorCode PAYROLL_DETAIL_APPROVE_APPROVE_RESULT_ERROR = new ErrorCode(1_100_023_025, "薪资正在审核中，请勿重复提交");
    ErrorCode PAYROLL_DETAIL_PAY_STUB_EMPTY = new ErrorCode(1_100_023_026, "数据为空，无法执行对应操作");
    ErrorCode PAYROLL_DETAIL_ARCHIVE_EMPTY = new ErrorCode(1_100_023_026, "归档失败，无可归档工资条");
    ErrorCode PAYROLL_DETAIL_DELETE_APPROVED_ERROR = new ErrorCode(1_100_023_027, "删除失败，薪资正在核算中");
    ErrorCode PAYROLL_DETAIL_NOT_APPROVE_ERROR = new ErrorCode(1_100_023_028, "存在未提交审核的薪资记录");

    // ========== 薪资审核记录 1_100_024_000 ==========
    ErrorCode PAYROLL_APPROVE_RECORD_NOT_EXISTS = new ErrorCode(1_100_024_000, "薪资审批记录不存在");
    ErrorCode PAYROLL_APPROVE_RECORD_USER_DEPT_ID_NULL = new ErrorCode(1_100_024_001, "账号未分配部门，不允许操作");

    // ========== 薪资审核记录详情 1_100_025_000 ==========
    ErrorCode PAYROLL_APPROVE_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_100_025_000, "薪资审批记录详情不存在");

    // ========== 工资条通知详情 1_100_026_000 ==========
    ErrorCode SALARY_NOTICE_NOT_EXISTS = new ErrorCode(1_100_026_000, "员工工资条通知不存在");
    ErrorCode SALARY_NOTICE_EMPLOYEE_ID_NOT_CONSISTENCE = new ErrorCode(1_100_026_001, "工资条通知不存在");
    ErrorCode SALARY_NOTICE_EMPLOYEE_UNBIND = new ErrorCode(1_100_026_002, "账号未绑定员工");
    ErrorCode SALARY_NOTICE_CONFIRMED = new ErrorCode(1_100_026_003, "工资条已确认，不允许操作");

    // ========== 部门 1_100_027_000 ==========
    ErrorCode DEPT_EXISTS_EMPLOYEE = new ErrorCode(1_100_027_001, "部门中存在员工，无法删除");
    ErrorCode DEPT_EXISTS_CHILD = new ErrorCode(1_100_027_002, "请删除此部门下的子部门后，再删除此部门");

    // ========== 岗位 1_100_028_000 ==========
    ErrorCode POST_EXISTS_EMPLOYEE = new ErrorCode(1_100_028_001, "岗位下存在员工，无法删除");

    // ========== 职级 1_100_029_000 ==========
    ErrorCode POST_LEVEL_EXISTS_EMPLOYEE = new ErrorCode(1_100_029_001, "职级下存在员工，无法删除");
    //=========== 考核 1_100_030_000
    ErrorCode EXAMINE_NOT_EXISTS = new ErrorCode(1_100_030_000, "考核计划不存在");
    ErrorCode EXAMINE_DIMENSION_NOT_EXISTS = new ErrorCode(1_100_030_001, "考核维度不存在");
    ErrorCode EXAMINE_DIMENSION_INDEX_NOT_EXISTS = new ErrorCode(1_100_030_002, "考核指标不能为空");
    ErrorCode EXAMINE_FLOW_PATH_NOT_EXISTS = new ErrorCode(1_100_030_003, "考核流程不存在");
    ErrorCode EXAMINE_FLOW_PERFORMANCE_NOT_EXISTS = new ErrorCode(1_100_030_004, "考核流程中间不存在");
    ErrorCode EXAMINE_RANGE_TYPE_NOT_EXISTS = new ErrorCode(1_100_030_005, "审核范围不存在");
    ErrorCode EXAMINE_RESULT_NOT_EXISTS = new ErrorCode(1_100_030_006, "考核结果模版不存在");
    ErrorCode EXAMINE_RESULT_CONFIG_NOT_EXISTS = new ErrorCode(1_100_030_007, "考核结果设置项不存在");
    ErrorCode EXAMINE_ASSESSMENT_SCOPE_NOT_EXISTS = new ErrorCode(1_100_030_008, "考核范围不存在");
    ErrorCode ASSESSMENT_SCOPE_TYPE_NOT_EXISTS = new ErrorCode(1_100_030_009, "考核范围类型部门或岗位");
    ErrorCode ASSESSMENT_SCOPE_EMPLOYEE_ID_NOT_EXISTS = new ErrorCode(1_100_030_010, "考核范围人员不能为空");
    ErrorCode FLOW_PERFORMANCE_EMPLOYEE_ID_NOT_EXISTS = new ErrorCode(1_100_030_011, "低绩效设置不能为空");
    ErrorCode POST_USER_ID_NOT_EXISTS = new ErrorCode(1_100_030_011, "岗位下不可以没有人员");
    ErrorCode EXAMINE_EMPLOYEE_RETIRE = new ErrorCode(1_100_030_014, "被考核人员存在已离职员工");
    ErrorCode EXAMINE_SCORE_EMPLOYEE_RETIRE = new ErrorCode(1_100_030_014, "评分人员存在已离职员工");
    ErrorCode EXAMINE_SCORE_EMPLOYEE_NOT_EXISTS = new ErrorCode(1_100_030_014, "部门层级负责人不存在");


    ErrorCode RESULT_CONFIG_NOT_EXISTS = new ErrorCode(1_100_030_015, "评分不合法");
    ErrorCode RESULT_SCORE_NOT_EXISTS = new ErrorCode(1_100_030_016, "存在未评分数据");
    ErrorCode NOT_FLOW_PATH = new ErrorCode(1_100_030_017, "存在未办理完的流程");
    ErrorCode RATING_EXCEEDS_UPPER_LIMIT = new ErrorCode(1_100_030_018, "评分超出上限");
    ErrorCode NOT_LOW_PERFORMANCE = new ErrorCode(1_100_030_019, "请先设置低绩效标准");

    ErrorCode DING_DING_NOT_CROP = new ErrorCode(1_100_030_020, "钉钉未绑定企业成员");
    ErrorCode PROGRAMME_REPEAT=new ErrorCode(1_100_031_01,"社保已存在相同的缴纳模版");
    ErrorCode ACCUMULATION_REPEAT=new ErrorCode(1_100_031_02,"公积金已存在相同的缴纳模版");



    // ========== 审批相关 1_100_040_000 ==========
    ErrorCode CHANGE_TYPE=new ErrorCode(1_100_040_001,"调动类型错误");
    ErrorCode CHANGE_REASON=new ErrorCode(1_100_040_002,"调动原因错误");



    // ========== 电子合同 1_100_050_000 ==========
    ErrorCode UPLOAD_FILE_ERROR=new ErrorCode(1_100_050_001,"上传文件失败");
    ErrorCode USER_IS_NULL_ERROR=new ErrorCode(1_100_050_002,"员工不存在");
    ErrorCode TEMP_IS_NULL_ERROR=new ErrorCode(1_100_050_003,"合同模板不存在");
    ErrorCode FOLDER_IS_NULL_ERROR=new ErrorCode(1_100_050_004,"文件类型不存在");
    ErrorCode E_TEMP_IS_NULL_ERROR=new ErrorCode(1_100_050_005,"获取编辑模板链接失败");
    ErrorCode E_SIGN_API_ERROR=new ErrorCode(1_100_050_006,"请求接口失败");
    ErrorCode E_SIGN_API_MESSAGE_ERROR=new ErrorCode(1_100_050_007,"{}");
    ErrorCode CORP_USER_IS_NULL_ERROR=new ErrorCode(1_100_050_008,"企业经办人不存在");
    ErrorCode E_SIGN_COMPONENT_IS_NULL=new ErrorCode(1430002,"有未填写数据");
    ErrorCode FOLDER_DETAIL_IS_NULL=new ErrorCode(1_100_050_009,"未查到该分组信息");
    ErrorCode E_TEMP_SIGN_IS_NULL=new ErrorCode(1_100_050_010,"缺少签署区域，请先编辑模板");
    ErrorCode E_TEMP_FOLDER_IS_NOT_NULL=new ErrorCode(1_100_050_011,"您暂时不能删除该分组");
    ErrorCode E_TASK_BPM_PROC_IS_NULL=new ErrorCode(1_100_050_012,"未查询到签署任务信息");
    ErrorCode E_SIGN_CONTRACT_NUM_ERROR=new ErrorCode(1_100_050_013,"电子签合同份数不足");
    ErrorCode EMP_CONTR_IS_NOT_NULL=new ErrorCode(1_100_050_014,"已有执行中的合同");
    ErrorCode EMP_SIGN_PHONE_ERROR=new ErrorCode(1_100_050_015,"手机号不匹配，请联系管理员修改");
    ErrorCode BPM_ERROR=new ErrorCode(1_100_050_016,"未配置审批");



}
